Sdílet prostřednictvím


System.Collections.Generic.HashSet<T> – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Třída HashSet<T> poskytuje vysoce výkonné množinové operace. Sada je kolekce, která neobsahuje žádné duplicitní prvky a jejichž prvky nejsou v žádném konkrétním pořadí.

Kapacita objektu HashSet<T> je počet prvků, které může objekt obsahovat. HashSet<T> Kapacita objektu se automaticky zvyšuje při přidání prvků do objektu.

Třída HashSet<T> je založená na modelu matematických sad a poskytuje operace s vysokou úrovní výkonu podobné přístupu ke klíčům kolekcí Dictionary<TKey,TValue> nebo Hashtable. Jednoduše řečeno, HashSet<T> třída může být považována Dictionary<TKey,TValue> za kolekci bez hodnot.

HashSet<T> Kolekce není seřazená a nemůže obsahovat duplicitní prvky. Pokud je duplikace pořadí nebo elementu pro vaši aplikaci důležitější než výkon, zvažte použití List<T> třídy společně s metodou Sort .

HashSet<T> poskytuje mnoho matematických operací sady, jako je sčítání sady (sjednocení) a odčítání sady. Následující tabulka uvádí zadané HashSet<T> operace a jejich matematické ekvivalenty.

Operace HashSet Matematický ekvivalent
UnionWith Sjednocení nebo sčítání množin
IntersectWith Křižovatka
ExceptWith Nastavení odčítání
SymmetricExceptWith Symetrický rozdíl

Kromě uvedených operací HashSet<T> sady třída také poskytuje metody pro určení rovnosti sady, překrytí sad a zda je sada podmnožinou nebo nadmnožinou jiné sady.

Pouze rozhraní .NET Framework: U velmi velkých HashSet<T> objektů můžete zvýšit maximální kapacitu na 2 miliardy prvků v 64bitovém systému nastavením enabled atributu <gcAllowVeryLargeObjects> elementu konfigurace do true prostředí runtime.

Třída HashSet<T> implementuje rozhraní ISet<T>.

HashSet a množinové operace LINQ

LINQ poskytuje přístup k množinovým operacím Distinct, Union, Intersect a Except pro jakýkoli datový zdroj, který implementuje rozhraní IEnumerable nebo IQueryable. HashSet<T> poskytuje větší a robustnější kolekci operací s množinami. Například HashSet<T> poskytuje porovnání, jako IsSubsetOf a IsSupersetOf.

Hlavním rozdílem mezi operacemi a operacemi HashSet<T> sady LINQ je, že operace sady LINQ vždy vrací novou IEnumerable<T> kolekci, zatímco HashSet<T> ekvivalentní metody upravují aktuální kolekci.

Pokud obvykle musíte vytvořit novou sadu nebo pokud vaše aplikace potřebuje přístup pouze k zadaným operacím sady, bude stačit použití operací sady LINQ pro libovolnou IEnumerable<T> kolekci nebo pole. Pokud však vaše aplikace vyžaduje přístup k dalším operacím sady nebo pokud není žádoucí nebo nutné vytvořit novou kolekci, použijte HashSet<T> třídu.

Následující tabulka ukazuje HashSet<T> operace a jejich ekvivalentní operace sady LINQ.

Operace HashSet LINQ ekvivalent
UnionWith Union
IntersectWith Intersect
ExceptWith Except
Není k dispozici. Distinct
SymmetricExceptWith Není k dispozici.
Overlaps Není k dispozici.
IsSubsetOf Není k dispozici.
IsProperSubsetOf Není k dispozici.
IsSupersetOf Není k dispozici.
IsProperSupersetOf Není k dispozici.
SetEquals Není k dispozici.